
//有用的链接： 
// https://www.jianshu.com/p/554a5bf67b31
// https://blog.csdn.net/u014267351/article/details/51212107

var id = req.query.id;
var sid = mongoose.Types.ObjectId(id);

userMode.create({
    name: userInfo.name,
    password: userInfo.password,
    age: userInfo.age
}, (error, doc) => {
    if (error) {
        console.error(error);
    } else {
        console.error(doc);
    }
})

//删除用户名为“tiny”的文档记录
var conditions = {name: 'tiny'};
userMode.remove(conditions, function (error) {
    if (error) {
        console.error(error);
    } else {
        console.error("用户删除成功")
    }
});


//查询用户名为“tiny”的文档记录是否还存在
userMode.findOne({name: "tiny"}, function (error, doc) {
    if (error) {
        console.error(error)
    } else {
        console.error("删除后数据：", doc)
    }
});

//更新用户名
var conditions = {name: request.body.name};
var updates = {$set: {name: "tiny"}};//将用户名更新为“tiny”
userMode.update(conditions, updates,{multi : true},  function (error) {
    if (error) {
        console.error(error);
    } else {
        console.error("更新用户名成功")
    }
});

Model.update({'age':22}, {'$inc':{'age':1} }  ); // 执行后: age=23

Model.update({'age':22}, {'$set':{'age':'haha'} }  ); // 执行后: age='haha'

Model.update({'age':22}, {'$unset':{'age':'haha'} }  ); //执行后: age键不存在`

//修改器参考
//https://blog.csdn.net/u014267351/article/details/51212107


Model.find({},null,{sort:{age:-1}},function(err,docs){
  //查询所有数据，并按照age降序顺序返回数据docs
});

//结果按时间排序，两种写法都可以
MyModel.find({name:'admin'}, null, {sort: [[['_id', -1]]]}, callback);
MyModel.find({}).sort({'_id':-1}).limit(6).exec(function(err,docs){})

//查询更新后的数据
userMode.findOne({name: "tinyjoy"}, function (error, doc) {
    if (error) {
        console.error(error)
    } else {
        console.error("更新后数据：", doc)
    }
});

//查询所有密码为“123456”的文档记录
userMode.find({"password": userInfo.password},{'name':1, 'age':0},function (error,docs) {
    if (error){
        console.error(error);
    }else{
        console.error("密码为123456的个数：",docs.length)
        console.error("所有文档如下：\n",docs)
    }
});

//查询密码为“1234567”的所有记录，返回文档记录只包含一个键值name
userMode.find({"password": userInfo.password},{name:"tinyjoy"},function (error,docs) {
    if (error){
        console.error(error);
    }else{
        console.error("查询结果：",docs)
    }
});


//查询密码为“1234567”的一条记录
userMode.findOne({"password": userInfo.password},function (error,doc) {
    if (error){
        console.error(error);
    }else{
        console.error("查询结果：",doc)
    }
});

//查询主键为”587d7b4aa51c535f09b8cc41“的一条记录
userMode.findById('587d7b4aa51c535f09b8cc41',function (error,doc) {
    if (error){
        console.error(error);
    }else{
        console.error("查询结果：",doc)
    }
});

//查询年龄小于18的所有记录
userMode.find({"age": {"$lt": 18}}, function (error, doc) {
    if (error) {
        console.error(error);
    } else {
        console.error("查询结果：", doc)
    }
});
//查询年龄小于等于18的所有记录
userMode.find({"age": {"$lte": 18}}, function (error, doc) {
    if (error) {
        console.error(error);
    } else {
        console.error("查询结果：", doc)
    }
});
//查询年龄不等于18的所有文档记录
userMode.find({"age": {"$ne": 18}}, function (error, doc) {
    if (error) {
        console.error(error);
    } else {
        console.error("年龄不等于18的查询结果：", doc)
    }
});
//查询年龄大于18的所有文档记录
userMode.find({"age": {"$gt": 18}}, function (error, doc) {
    if (error) {
        console.error(error);
    } else {
        console.error("年龄大于18的查询结果：", doc)
    }
});
//查询年龄大于等于18的所有文档记录
userMode.find({"age": {"$gte": 18}}, function (error, doc) {
    if (error) {
        console.error(error);
    } else {
        console.error("年龄大于等于18的查询结果：", doc)
    }
});
//查询年龄大于等于18小于等于60所有文档记录
userMode.find({"age": {"$gte": 18, "$lte": 60}}, function (error, doc) {
    if (error) {
        console.error(error);
    } else {
        console.error("年龄大于等于18小于等于60查询结果：", doc)
    }
});

//查询年龄等于18的所有记录
userMode.find({age:{$in: 18}},function (error,doc) {
    if (error){
        console.error(error);
    }else{
        console.error("年龄为18的查询结果：",doc)
    }
});

//查询年龄等于18和19的所有记录
userMode.find({age:{"$in":[18,19]}},function (error,docs) {
    if (error){
        console.error(error);
    }else{
        console.error("年龄为18和19的查询结果：",docs)
    }
});

//查询年龄不等于18和19的所有记录
userMode.find({age:{"$nin":[18,19]}},function (error,docs) {
    if (error){
        console.error(error);
    }else{
        console.error("年龄不等于18和19的查询结果：",docs)
    }
});

//查询年龄等于18或者名字为tiny所有记录
userMode.find({"$or": [{"name": "tiny"}, {"age": 18}]}, function (error, docs) {
    if (error) {
        console.error(error);
    } else {
        console.error("$or查询结果：", docs)
    }
});

//查询年龄不等于18且名字不为tiny所有记录
userMode.find({"$nor": [{"name": "tiny"}, {"age": 18}]}, function (error, docs) {
    if (error) {
        console.error(error);
    } else {
        console.error("$nor查询结果：", docs)
    }
});

//查询所有存在name属性的文档
userMode.find({name: {$exists: true}}, function (error, docs) {
    if (error) {
        console.error(error);
    } else {
        console.error("exists查询结果：", docs)
    }
});


Schema.statics.findAndModify = function (query, sort, doc, options, callback) {
  return this.collection.findAndModify(query, sort, doc, options, callback);
};

Model.findAndModify({
  _id: name
}, [], { $inc: { seq: 1 } }, {new: true}, function (err, result) {
  if (err) {
    console.log(err);
  }else{
    console.log(result);
    persons.create({
      _id: result.value.seq,
      name: new_name
    }, (error, doc) => {
      if (error) {
        console.log(error);
      } else {
        console.log(doc);
      }
    })
  }
});
